home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 002 / pcspel2.arc / SPELL.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-11-04  |  1.8 KB  |  56 lines

  1. 10  REM pc-spell version 1.15
  2. 20  REM by Andy Wildenberg
  3. 30  REM all rights reserved
  4. 35  REM Modified 11-04-84 by Ben Blackstock
  5. 40  DEFINT A-Z:CLS:KEY OFF:DIM A$(1500)
  6. 45  PRINT "PC-SPELL v1.15 by Andy Wildenberg; modified by Ben Blackstock 11-04-84"
  7. 50  INPUT "Drive (path) for pc-spell diskette files ";DDISK$
  8. 60  INPUT "Drive (path) for diskette with file to check ";WDISK$
  9. 70  PRINT:FILES WDISK$+"*.*"
  10. 80  PRINT:INPUT "Which file do you wish spell-checked (c:filespec.txt) ";FILE$
  11. 82  CLS
  12. 84  LOCATE 10,15:PRINT "Spellcheck in progress of " FILE$
  13. 90  OPEN FILE$ FOR INPUT AS #1
  14. 100  WHILE NOT EOF(1) AND FRE(0)>5000
  15. 110  LINE INPUT #1,A$
  16. 120  FOR X=1 TO LEN(A$)
  17. 130  Y$=MID$(A$,X,1):Y=ASC(Y$)
  18. 140  IF Y>64 AND Y<91 THEN Y$=CHR$(Y+32):GOTO 200
  19. 150  IF Y>96 AND Y<123 THEN 200
  20. 160  IF Y=39 THEN 200
  21. 170  GOSUB 1000
  22. 190  NEXT X:GOSUB 1000:WEND:RESET:GOTO 230 'end of loop
  23. 200  WORD$=WORD$+Y$:GOTO 190
  24. 230  REM sort routine but first clean up old stacks
  25. 240  D=2^INT(LOG(CURWORD)/LOG(2))-1:LOCATE 14,15:PRINT "Start:";TIME$;:LOCATE 15,15:PRINT "Predicted time of sort";INT(0.043943*CURWORD^1.26);"seconds."
  26. 250  D=2^INT(LOG(CURWORD)/LOG(2))-1
  27. 260  FOR I=1 TO CURWORD-D
  28. 270  FOR J=I TO 1 STEP -D
  29. 280  IF A$(J)<=A$(J+D) THEN 310
  30. 290  SWAP A$(J),A$(J+D)
  31. 300  NEXT J
  32. 310  NEXT I
  33. 320  D=INT(D/2):LOCATE 16,15:PRINT "The time is ";TIME$;:IF D>0 THEN 260
  34. 330  LOCATE 17,15:PRINT "Stop:";TIME$;
  35. 340  REM unique
  36. 350  Y=1:A$="" ' initialize all pointers
  37. 360  FOR X=1 TO CURWORD
  38. 370  IF A$<>A$(X) THEN A$=A$(X):A$(Y)=A$:Y=Y+1:LOCATE 18,15:PRINT "Unique words ";Y;
  39. 380  NEXT X
  40. 500  REM spelling checker
  41. 510  OPEN DDISK$+"dictiona" FOR INPUT AS #1:A$="":OPEN WDISK$+"misspell" FOR OUTPUT AS #2
  42. 520  FOR X=1 TO Y
  43. 530  IF NOT EOF(1) THEN INPUT #1,A$:IF A$="" THEN 530 ELSE GOSUB 600 ELSE 580
  44. 540  IF A$(X)<A$ THEN PRINT #2,A$(X):MISSPELL=MISSPELL+1
  45. 550  IF A$(X)=A$ THEN CORRECT=CORRECT+1
  46. 560  IF A$(X)>A$ THEN 530
  47. 570  LOCATE 24,55:PRINT "found";CORRECT;"not found";MISSPELL;:NEXT X
  48. 580  RESET
  49. 590  END
  50. 600  IF ASC(LEFT$(A$,1))>64 OR LEFT$(A$,1)="'" THEN LASTWORD$=A$:RETURN 'not compressed
  51. 610  SAME=ASC(LEFT$(A$,1))-48
  52. 620  A$=LEFT$(LASTWORD$,SAME)+MID$(A$,2)
  53. 630  LASTWORD$=A$:RETURN
  54. 1000  IF LEN(WORD$)>1 THEN A$(CURWORD)=WORD$:CURWORD=CURWORD+1:LOCATE 24,1:PRINT CURWORD;
  55. 1010  WORD$="":RETURN
  56.